public class BinarySearchBasic {

    /**
     * 编写二分查找方法
     * @param A : 有序数组a
     * @param target : 目标查找值
     * @return 返回索引值
     */
    public static int binarySearchBasic(int[] A, int target) {
        // 定义左右指针
        int i = 0, j = A.length - 1;
        // 定义循环条件
        while (i <= j) {
            // 定义中间指针m
            int m = (i + j) / 2;
            // 判断A[m] 值 与 target值
            if (target < A[m]){
                // 中间值大 : 指针[m , j]中的值都会比target值大
                j = m - 1;
            } else if (A[m] < target){
                // 中间值小 : 指针[i , m]中的值都会比target值小
                i = m + 1;
            } else {
                // A[m] == target: 得到结果,结束循环,返回m
                return m;
            }
        }
        //i > j : 结束循环
        return -1; // 结束循环,返回-1
    }
}
